var accountList; //账户列表
var listSubType = ""; //采购 销售等
var depotHeadID = 0; //主表id
var mPropertyList = ""; //商品属性列表
var outItemList; //支出项目列表
var otherColumns = true; //明细中的‘别名’列是否显示
var payTypeTitle = "";//收入 支出
var itemType = true; //隐藏当前列
var moneyType = true; //隐藏当前列

$(function () {
    initSystemData_account(); //获取账户信息
    initMProperty(); //初始化商品属性
    initOutItemList(); //初始化支出项目
    initialize();//初始化系统基础信息

});

//获取账户信息
function initSystemData_account() {
    $.ajax({
        type: "get",
        url: "/account/getAccount",
        //设置为同步
        async: false,
        dataType: "json",
        success: function (res) {
            if (res && res.code === 200) {
                accountList = res.data.accountList;
            }
        }
    });
}

//初始化商品属性
function initMProperty() {
    $.ajax({
        type: "get",
        url: "/materialProperty/list",
        dataType: "json",
        data: ({
            search: JSON.stringify({
                name: ""
            }),
            currentPage: 1,
            pageSize: 100
        }),
        //设置为同步
        async: false,
        success: function (res) {
            if (res && res.code === 200) {
                if (res.data && res.data.page) {
                    var thisRows = res.data.page.rows;
                    for (var i = 0; i < thisRows.length; i++) {
                        if (thisRows[i].enabled) {
                            mPropertyList += thisRows[i].nativename + ",";
                        }
                    }
                    if (mPropertyList) {
                        mPropertyList = mPropertyList.substring(0, mPropertyList.length - 1);
                    }
                }
            }
        },
        //此处添加错误处理
        error: function () {
            $.messager.alert('查询提示', '查询信息异常，请稍后再试！', 'error');
            return;
        }
    });
}

//初始化收入项目列表
function initOutItemList() {
    $.ajax({
        type: "get",
        url: "/inOutItem/findBySelect?type=out",
        //设置为同步
        async: false,
        dataType: "json",
        success: function (res) {
            if (res) {
                outItemList = res;
            }
        },
        error: function () {

        }
    });
}

function initialize() {
    var url = location.href; //获取浏览器地址
    var params = url.substring(url.indexOf("?") + 1);
    var number = params.substring(params.indexOf("n=") + 2, params.indexOf("&"));
    var billType = "";
    var listSubType = params.substring(params.indexOf("&type=") + 6);
    if (listSubType) {
        listSubType = decodeURI(listSubType);
    }
    if (listSubType == "采购入库") {
        billType = "material";
        $("#bill .purchase_in").show();
        tableString = $(".purchase_in").html();
    } else if (listSubType == "采购退货出库") {
        billType = "material";
        $("#bill .purchase_back").show();
        tableString = $(".purchase_back").html();
    } else if (listSubType == "销售出库") {
        billType = "material";
        $("#bill .sale_out").show();
        tableString = $(".sale_out").html();
    } else if (listSubType == "销售退货入库") {
        billType = "material";
        $("#bill .sale_back").show();
        tableString = $(".sale_back").html();
    } else if (listSubType == "零售出库") {
        billType = "material";
        $("#bill .retail_out").show();
        tableString = $(".retail_out").html();
    } else if (listSubType == "零售退货入库") {
        billType = "material";
        $("#bill .retail_back").show();
        tableString = $(".retail_back").html();
    } else if (listSubType == "其它入库") {
        billType = "material";
        $("#bill .other_in").show();
        tableString = $(".other_in").html();
    } else if (listSubType == "其它出库") {
        billType = "material";
        $("#bill .other_out").show();
        tableString = $(".other_out").html();
    } else if (listSubType == "调拨出库") {
        billType = "material";
        $("#bill .allocation_out").show();
        tableString = $(".allocation_out").html();
    } else if (listSubType == "收入") {
        billType = "account";
        payTypeTitle = "收入项目";
        itemType = false; //显示当前列
        moneyType = true; //隐藏当前列
        $("#bill .item_in").show();
        tableString = $(".item_in").html();
    } else if (listSubType == "支出") {
        billType = "account";
        payTypeTitle = "支出项目";
        itemType = false; //显示当前列
        moneyType = true; //隐藏当前列
        $("#bill .item_out").show();
        tableString = $(".item_out").html();
    } else if (listSubType == "收款") {
        billType = "account";
        payTypeTitle = "无标题";
        itemType = true; //隐藏当前列
        moneyType = false; //显示当前列
        $("#bill .money_in").show();
        tableString = $(".money_in").html();
    } else if (listSubType == "付款") {
        billType = "account";
        payTypeTitle = "无标题";
        itemType = true; //隐藏当前列
        moneyType = false; //显示当前列
        $("#bill .money_out").show();
        tableString = $(".money_out").html();
    } else if (listSubType == "转账") {
        billType = "account";
        payTypeTitle = "无标题";
        itemType = true; //隐藏当前列
        moneyType = false; //显示当前列
        $("#bill .giro").show();
        tableString = $(".giro").html();
    } else if (listSubType == "收预付款") {
        billType = "account";
        payTypeTitle = "无标题";
        itemType = true; //隐藏当前列
        moneyType = false; //显示当前列
        $("#bill .advance_in").show();
        tableString = $(".advance_in").html();
    }

    //如果是进货、销售
    if (billType == "material") {
        $.ajax({
            url: "/depotHead/getDetailByNumber",
            data: {
                number: number
            },
            type: "get",
            success: function (res) {
                if (res && res.code === 200) {
                    var data = res.data;
                    var manyAccountMoney = 0; //多账户合计-零售
                    if (data.accountName) {
                        $("#bill .AccountIdShow").text(data.accountName); //结算账户
                    } else if (data.accountidlist && data.accountmoneylist) {
                        var accountArr = data.accountidlist; //账户id列表
                        var accountMoneyArr = data.accountmoneylist; //账户金额列表
                        var accountIdShow = "";
                        for (var j = 0; j < accountArr.length; j++) {
                            if (accountList != null) {
                                for (var i = 0; i < accountList.length; i++) {
                                    var account = accountList[i];
                                    if (accountArr[j] == account.id) {
                                        var currentAccountMoney = accountMoneyArr[j] - 0;
                                        if (currentAccountMoney < 0) {
                                            currentAccountMoney = 0 - currentAccountMoney;
                                        }
                                        accountIdShow = accountIdShow + account.name + "(" + currentAccountMoney + "元) ";
                                        manyAccountMoney += accountMoneyArr[j] - 0; //多账户合计-零售
                                    }
                                }
                            }
                        }
                        $("#bill .AccountIdShow").text(accountIdShow);
                    }
                    $("#bill .OrganIdShow").text(data.organName);
                    $("#bill .OperTimeShow").text(data.opertimeStr);
                    $("#bill .NumberShow").text(data.number);
                    $("#bill .LinkNumberShow").text(data.linknumber ? data.linknumber : "");
                    $("#bill .RemarkShow").text(data.remark);
                    $("#bill .DiscountShow").text(data.discount);
                    $("#bill .DiscountMoneyShow").text(data.discountmoney);
                    $("#bill .DiscountLastMoneyShow").text(data.discountlastmoney);
                    $("#bill .ChangeAmountShow").text(data.changeamount == null ? "" : data.changeamount);
                    $("#bill .DebtShow").text((data.discountlastmoney - data.changeamount).toFixed(2));
                    $("#bill .OtherMoneyShow").text(data.othermoney == null ? "" : data.othermoney);
                    $("#bill .AccountDayShow").text(data.accountday == null ? "" : data.accountday); //结算天数
                    var otherMoney = data.othermoney + "";
                    var otherMoneyList = data.othermoneylist + "";
                    var otherMoneyItem = data.othermoneyitem + "";
                    if (otherMoneyList && otherMoneyItem) {
                        var itemArr = otherMoneyList.split(","); //支出项目id列表
                        var itemMoneyArr = otherMoneyItem.split(","); //支出项目金额列表
                        var otherMoneyShow = "";
                        for (var j = 0; j < itemArr.length; j++) {
                            if (outItemList != null) {
                                for (var i = 0; i < outItemList.length; i++) {
                                    var money = outItemList[i];
                                    if (itemArr[j] == money.Id) {
                                        otherMoneyShow = otherMoneyShow + money.InOutItemName + "(" + itemMoneyArr[j] + "元) ";
                                    }
                                }
                            }
                        }
                        $("#bill .OtherMoneyShow:visible").text(otherMoneyShow + "总计：" + otherMoney.replace("undefined", "0") + "元 "); //采购费用、销售费用
                    }
                    $("#bill .payTypeShow").text(data.payType);
                    var TotalPrice = data.totalprice;
                    depotHeadID = data.id;
                    initTableData_material_show(TotalPrice, listSubType); //商品列表-查看状态

                    //零售单据展示数据
                    if (listSubType == "零售出库" || listSubType == "零售退货入库") {
                        $("#bill .change-amount-show").text(data.changeamount);
                        var changeAccount = $("#bill .change-amount-show:visible").text() - 0;
                        if (manyAccountMoney !== 0) {
                            $("#bill .get-amount-show").text((manyAccountMoney).toFixed(2));
                            $("#bill .back-amount-show").text((manyAccountMoney - changeAccount).toFixed(2));
                        } else {
                            $("#bill .get-amount-show").text((changeAccount).toFixed(2));
                            $("#bill .back-amount-show").text(0);
                        }
                    }
                    if (listSubType === "销售出库" || listSubType === "销售退货") {
                        var salesManInfo = data.salesman;
                        if (salesManInfo) {
                            var arr = salesManInfo.split(",");
                            var salesmanStr = "";
                            for (var i = 0; i < arr.length; i++) {
                                if (arr[i]) {
                                    if (i === arr.length - 1) {
                                        salesmanStr += arr[i].replace("<", "").replace(">", "");
                                    } else {
                                        salesmanStr += arr[i].replace("<", "").replace(">", "") + ",";
                                    }
                                }
                            }
                            $.ajax({
                                type: "get",
                                url: "/person/getPersonByIds",
                                data: {
                                    personIDs: salesmanStr
                                },
                                success: function (res) {
                                    if (res && res.code === 200 && res.data) {
                                        $("#bill .SalesmanShow").text(res.data.names); //销售人员列表
                                    }
                                },
                                error: function () {

                                }
                            });
                        }
                    }
                }
            }
        });
    }
    //如果是财务单据
    else if (billType == "account") {
        $.ajax({
            url: "/accountHead/getDetailByNumber",
            data: {
                billNo: number
            },
            type: "get",
            success: function (res) {
                if (res && res.code === 200) {
                    var data = res.data;
                    $("#bill .BillNoShow").text(data.billno);
                    $("#bill .BillTimeShow").text(data.billtime);
                    $("#bill .RemarkShow").text(data.remark);
                    $("#bill .AccountIdShow").text(data.accountname);
                    $('#bill .OrganIdShow').text(data.organname);
                    $("#bill .HandsPersonIdShow").text(data.handspersonname);
                    $("#bill .ChangeAmountShow").text(data.changeamount == null ? "" : data.changeamount);
                    var totalprice = data.totalprice;
                    var accountHeadID = data.id;
                    initTableData_account_show(totalprice, accountHeadID); //明细列表-查看状态
                }
            }
        });
    }
    //打印table
    $("#print_bill_detail").off("click").on("click", function () {
        var tableString = "";//打印table
        if (listSubType == "采购入库") {
            tableString = $(".purchase_in").html();
        } else if (listSubType == "采购退货出库") {
            tableString = $(".purchase_back").html();
        } else if (listSubType == "销售出库") {
            tableString = $(".sale_out").html();
        } else if (listSubType == "销售退货入库") {
            tableString = $(".sale_back").html();
        } else if (listSubType == "零售出库") {
            tableString = $(".retail_out").html();
        } else if (listSubType == "零售退货入库") {
            tableString = $(".retail_back").html();
        } else if (listSubType == "其它入库") {
            tableString = $(".other_in").html();
        } else if (listSubType == "其它出库") {
            tableString = $(".other_out").html();
        } else if (listSubType == "调拨出库") {
            tableString = $(".allocation_out").html();
        } else if (listSubType == "收入") {
            tableString = $(".item_in").html();
        } else if (listSubType == "支出") {
            tableString = $(".item_out").html();
        } else if (listSubType == "收款") {
            tableString = $(".money_in").html();
        } else if (listSubType == "付款") {
            tableString = $(".money_out").html();
        } else if (listSubType == "转账") {
            tableString = $(".giro").html();
        } else if (listSubType == "收预付款") {
            tableString = $(".advance_in").html();
        }
        localStorage.setItem("tableString", tableString);
        window.open("../../js/print/print_form.html", "location:No;status:No;help:No;dialogWidth:800px;dialogHeight:600px;scroll:auto;");
    });
}

//初始化表格数据-商品列表-查看状态
function initTableData_material_show(TotalPrice, listSubType) {
    var isShowAnotherDepot = true; //显示对方仓库,true为隐藏,false为显示
    var anotherDepotHeadName = ""; //对方仓库的列的标题
    var depotHeadName = ""; //仓库的列的标题
    if (listSubType == "调拨出库") {
        isShowAnotherDepot = false; //调拨时候显示对方仓库
        anotherDepotHeadName = "调入仓库";
    } else {
        depotHeadName = "仓库名称";
    }
    var isShowTaxColumn = false; //是否显示税率相关的列,true为隐藏,false为显示
    if (listSubType == "调拨出库" || listSubType == "其它出库" || listSubType == "其它入库" || listSubType == "零售出库" || listSubType == "零售退货入库") {
        isShowTaxColumn = true; //隐藏
    }
    var isShowMaterialTypeColumn = true; //是否显示商品类型相关的列,true为隐藏,false为显示
    if (listSubType == "组装单" || listSubType == "拆卸单") {
        isShowMaterialTypeColumn = false; //显示
    }
    $('#bill .materialDataShow').datagrid({
        height: 245,
        rownumbers: true,
        //动画效果
        animate: false,
        //选中单行
        singleSelect: true,
        collapsible: false,
        selectOnCheck: false,
        pagination: false,
        //交替出现背景
        striped: true,
        showFooter: true,
        columns: [[
            {
                title: '商品类型',
                field: 'MType',
                width: 80,
                hidden: isShowMaterialTypeColumn
            },
            {
                title: depotHeadName,
                field: 'DepotName',
                editor: 'validatebox',
                width: 90
            },
            {title: '品名(型号)(扩展信息)(单位)', field: 'MaterialName', width: 230},
            {
                title: anotherDepotHeadName,
                field: 'AnotherDepotName',
                hidden: isShowAnotherDepot,
                width: 90
            },
            {title: '单位', field: 'Unit', editor: 'validatebox', width: 60},
            {
                title: '数量',
                field: 'OperNumber',
                editor: 'validatebox',
                width: 60
            },
            {title: '单价', field: 'UnitPrice', editor: 'validatebox', width: 60},
            {
                title: '含税单价',
                field: 'TaxUnitPrice',
                editor: 'validattebox',
                hidden: isShowTaxColumn,
                width: 75
            },
            {title: '金额', field: 'AllPrice', editor: 'validatebox', width: 75},
            {
                title: '税率',
                field: 'TaxRate',
                editor: 'validatebox',
                hidden: isShowTaxColumn,
                width: 75
            },
            {
                title: '税额',
                field: 'TaxMoney',
                editor: 'validatebox',
                hidden: isShowTaxColumn,
                width: 75
            },
            {
                title: '价税合计',
                field: 'TaxLastMoney',
                editor: 'validatebox',
                hidden: isShowTaxColumn,
                width: 75
            },
            {title: '备注', field: 'Remark', editor: 'validatebox', width: 120},
            {
                title: '品名-别',
                field: 'OtherField1',
                editor: 'validatebox',
                hidden: otherColumns,
                width: 60
            },
            {
                title: '型号-别',
                field: 'OtherField2',
                editor: 'validatebox',
                hidden: otherColumns,
                width: 60
            },
            {
                title: '颜色-别',
                field: 'OtherField3',
                editor: 'validatebox',
                hidden: otherColumns,
                width: 60
            },
            {
                title: '备注1',
                field: 'OtherField4',
                editor: 'validatebox',
                hidden: true,
                width: 60
            },
            {
                title: '备注2',
                field: 'OtherField5',
                editor: 'validatebox',
                hidden: true,
                width: 60
            }
        ]],
        onLoadError: function () {
            $.messager.alert('页面加载提示', '页面加载异常，请稍后再试！', 'error');
            return;
        }
    });
    $.ajax({
        type: "get",
        url: '/depotItem/getDetailList',
        data: {
            headerId: depotHeadID,
            mpList: mPropertyList
        },
        dataType: "json",
        success: function (res) {
            if (res && res.code === 200) {
                var data = res.data;
                var AllPrice = TotalPrice;
                var DiscountMoney = $("#bill .DiscountMoneyShow:visible").text() - 0; //优惠金额
                var DiscountLastMoney = $("#bill .DiscountLastMoneyShow:visible").text() - 0; //优惠后金额
                var array = [];
                array.push({
                    "AllPrice": AllPrice,
                    "TaxLastMoney": DiscountMoney + DiscountLastMoney
                });
                data.footer = array;
                $("#bill .materialDataShow").datagrid('loadData', data);
            }
        },
        error: function () {
            $.messager.alert('查询提示', '查询数据后台异常，请稍后再试！', 'error');
        }
    });
}

//初始化表格数据-明细列表-查看状态
function initTableData_account_show(totalprice, accountHeadID) {
    $('#bill .accountDataShow').datagrid({
        height: 280,
        rownumbers: true,
        //动画效果
        animate: false,
        //选中单行
        singleSelect: true,
        collapsible: false,
        selectOnCheck: false,
        //单击行是否选中
        checkOnSelect: false,
        pagination: false,
        //交替出现背景
        striped: true,
        showFooter: true,
        columns: [[
            {
                title: payTypeTitle,
                field: 'InOutItemName',
                width: 230,
                hidden: itemType
            },
            {
                title: '账户名称',
                field: 'AccountName',
                width: 230,
                hidden: moneyType
            },
            {title: '金额', field: 'EachAmount', width: 70},
            {title: '备注', field: 'Remark', width: 150}
        ]],
        onLoadError: function () {
            $.messager.alert('页面加载提示', '页面加载异常，请稍后再试！', 'error');
            return;
        }
    });
    $.ajax({
        type: "get",
        url: '/accountItem/getDetailList',
        data: {
            headerId: accountHeadID
        },
        dataType: "json",
        success: function (res) {
            if (res && res.code === 200) {
                var data = res.data;
                var EachAmount = totalprice;
                var array = [];
                array.push({
                    "EachAmount": EachAmount
                });
                data.footer = array;
                $("#bill .accountDataShow").datagrid('loadData', data);
            }
        },
        error: function () {
            $.messager.alert('查询提示', '查询数据后台异常，请稍后再试！', 'error');
        }
    });
}

function print() {
    alert(listSubType);
}
